使用 JDBC 驱动

该模块阐述如何在 Apache Drill 中安装 JDBC 驱动。为了使用 JDBC 驱动,你需执行:

  1. 查看先决条件。
  2. 获取 Drill 的 JDBC 驱动。
  3. 放入 JDBC 驱动 jar 文件到 classpath。
  4. 使用一个可用到 URL 到 JDBC 连接字符串中,当你写入到应用代码或是配置 BI 工具时。
  5. 使用 Drill 驱动类名到应用代码或是配置客户端工具。

大多数客户端工具提供一个 UI 用于提供输入连接信息,包含驱动位置,连接 URL,和驱动类名。连接 Drill 的客户端工具可以通过 JDBC,详看使用 JDBC 到 SQuirreL 和配置 Spotfire 服务。

先决条件

  • JRE 7 或 JDK 7
  • Drill 安装
  • 描述安装 Drill JDBC 驱动到 JReport 的四个步骤

得到 Drill JDBC 驱动

Drill JDBC 驱动的 JAR 文件必须存在一个客户端机器中,以至于你能够配置驱动到应用或第三方工具中。获得驱动有以下方式:

  • 拷贝 drill-jdbc-all JAR 文件到 Drill 的安装目录的节点。
    1. <drill_installation_directory>/jars/jdbc-driver/drill-jdbc-all-<version>.jar
    或者
  • 下载以下 TAR 文件到本地的客户端:apache- drill-1.0.0.tar.gz。解压文件。在 Windows 中,你可能需要使用解压工具,例如 7-zip。驱动抽取到以下目录:
    1. <drill-installation_directory>/jars/jdbc-driver/drill-jdbc-all-<version>.jar

使用 JDBC 连接 Drillbit

对于 JDBC 的 URL 格式略有不同,这取决于你想连接到 Drill 的方式:随机,本地,或是直接。本节涵盖了使用的网址为随机或本地连接。使用 URL 直接连接到 Drill 上后。如果你想让它来随机选择 Drill 的集群,或者如果你想连接到当地的 Drill,驱动程序的 URL 格式:

  1. jdbc:drill:zk=<zk name>[:<port>][,<zk name2>[:<port>]...
  1. <directory>/<cluster ID>;[schema=<storage plugin>]

这里:

  • jdbc 是连接类型。需要。
  • schema 是存储插件的名称,用于配置使用默认的类型。例如:schema=hive。可选。
  • zk name 指定一个或多个 ZooKeeper 的主机名,或是 IP 地址。使用 local 代替主机名或 IP 地址去连接本地的 Drillbit。需要。
  • port 是 ZooKeeper 的端口号。端口 2181 是默认的。在 MapR 集群上,默认是 5181.可选。
  • directory 是 Drill 在 ZooKeeper 中的目录,它默认在 /drill。可选。
  • cluster ID 默认是 drillbits1。如果默认被修改,确定集群 ID,并使用它。可选。

确认集群 ID

确认集群 ID,需检查以下文件:

  1. <drill-installation>/conf/drill-override.conf

例如:

  1. ...
  2. drill.exec: {
  3. cluster-id: "docs41cluster-drillbits",
  4. zk.connect: "centos23.lab:5181,centos28.lab:5181,centos29.lab:5181"
  5. }
  6. ...

使用例子

单节点安装

  1. jdbc:drill:zk=maprdemo:5181
  1. jdbc:drill:zk=centos23.lab:2181/drill/docs41cluster-drillbits
  1. jdbc:drill:zk=10.10.100.56:2181/drill/drillbits1;schema=hive

集群安装

  1. jdbc:drill:zk=10.10.100.30:5181,10.10.100.31:5181,10.10.100.32:2181/drill/drillbits1;schema=hive

使用 JDBC 的 URL 格式直接连接 Drillbit

如果你想直接连接 Drillbit 替代用 ZooKeeper 去选择 Drillbit,替换 zk=<zk name>drillbit=<node>,格式如下所示:

  1. jdbc:drill:drillbit=<node name>[:<port>][,<node name2>[:<port>]...
  2. <directory>/<cluster ID>[schema=<storage plugin>]

这里:drillbit=<node name> 指定正在运行的 Drill 集群上的一个或更多主机名或是 IP 地址

使用 Drill 驱动类名

类名驱动是 org.apache.drill.jdbc.Driver。更多详细信息,可以参考 Apache Drill JDBC 驱动版本 1.2.0 (Javadoc)[http://drill.apache.org/api/1.2/jdbc/]。

连接 Drill 的编程示例代码

以下简单的代码展示去使用类名和 Drill-Jdbc-all 驱动去连接 Drill:

  1. Class.forName("org.apache.drill.jdbc.Driver");
  2. Connection connection =DriverManager.getConnection("jdbc:drill:zk=
  3. node3.mynode.com:2181/drill/my_cluster_com-drillbits");
  4. Statement st = connection.createStatement();
  5. ResultSet rs = st.executeQuery("SELECT * from cp.`employee`");
  6. while(rs.next()){
  7. System.out.println(rs.getString(1));
  8. }